import axios from "axios";

//基础读
const axiosr = axios.create({
    baseURL:'http://101.201.170.32:8888/T5',
    timeout:10000
})

//基础读
const axiosrmedical = axios.create({
    baseURL:'http://101.201.170.32:8888/T7',
    timeout:10000
})

//基础读
const axiosrnewmedical = axios.create({
    baseURL:'http://101.201.170.32:8888/T10',
    timeout:10000
})

const axiosrzsh = axios.create({
    baseURL:'http://101.201.170.32:5206/api',
    timeout:10000
})
// 添加请求拦截器
axiosr.interceptors.request.use(function (config) {
    // 数据提交后端要加入新的Token值
        config.headers["Authorization"] =
            "Bearer " + localStorage.getItem("token");
    // 在发送请求之前做些什么
    return config;
  }, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });

// 添加响应拦截器
axiosr.interceptors.response.use(function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return response;
  }, function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error);
  });


  // 添加请求拦截器
axiosrmedical.interceptors.request.use(function (config) {
    // 数据提交后端要加入新的Token值
        config.headers["Authorization"] =
            "Bearer " + localStorage.getItem("token");
    // 在发送请求之前做些什么
    return config;
  }, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });

// 添加响应拦截器
axiosrmedical.interceptors.response.use(function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return response;
  }, function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error);
  });

  // 添加请求拦截器
axiosrnewmedical.interceptors.request.use(function (config) {
    // 数据提交后端要加入新的Token值
        config.headers["Authorization"] =
            "Bearer " + localStorage.getItem("token");
    // 在发送请求之前做些什么
    return config;
  }, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });

// 添加响应拦截器
axiosrnewmedical.interceptors.response.use(function (response) {
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    return response;
  }, function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error);
  });

export function getUserPermissions(userId: string | number) {
    return axiosr.get('/Permission/GetUserPermissions', { params: { UserId: userId } });
}

// 首页相关T7
export function getHomeStatistics() {
    return axiosrmedical.get('/Home/GetHomeStatistics');
}

export function getRealTimeRegisters(limit = 10) {
    return axiosrmedical.get('/Home/GetRealTimeRegisters', { params: { limit } });
}

export function getHotDepartments(limit = 10) {
    return axiosrmedical.get('/Home/GetHotDepartments', { params: { limit } });
}

export function getHotDoctors(limit = 10) {
    return axiosrmedical.get('/Home/GetHotDoctors', { params: { limit } });
}

export function getDailyRegisters() {
    return axiosrmedical.get('/Home/GetDailyRegisters');
}

export function getDailyRecharges() {
    return axiosrmedical.get('/Home/GetDailyRecharges');
}

// 轮播图相关接口
export function getCarouselList(params: { Title?: string, CreateTimeStart?: string, CreateTimeEnd?: string, page?: number, pageSize?: number }) {
    return axiosrnewmedical.get('/ContentManagement/Carousel', { params });
}

// 患者相关接口
export function getPatientByAccount(accountId: number) {
    return axiosrnewmedical.get(`/Patient/GetPatientByAccountId`, { params: { accountId } });
}

// 患者列表接口 - 尝试不同的参数传递方式
export function getPatientListByAccount(accountId: number) {
    return axiosrnewmedical.get('/Patient/GetPatientsByAccountId', { params: { accountId } });
}

// 就诊记录相关接口
export function getRecentVisitRecords(patientId: number) {
    return axiosrnewmedical.get('/ContentManagement/VisitRecord/GetRecentVisitRecords', { 
        params: { patientId } 
    });
}

// 医院相关接口
export function searchHospitals(params?: { hospitalName?: string, region?: string }) {
    return axiosrnewmedical.get('/Hospital/SearchHospitals', { params });
}

// 获取医院类型列表
export function getHospitalTypes() {
    return axiosrnewmedical.get('/Hospital/GetHospitalTypes');
}

// 获取科室列表（级联结构）
export function getDepartmentsCascade() {
    return axiosrnewmedical.get('/Department/GetDepartmentList');
}

// 获取医院详情
export function getHospitalById(hospitalId: number) {
    return axiosrnewmedical.get('/Hospital/GetHospitalById', { params: { id: hospitalId } });
}

// 获取一级科室列表
export function getFirstLevelDepartments(params?: { DepartmentName?: string, Type?: string }) {
    return axiosrnewmedical.get('/ContentManagement/Department/GetFirstLevelDepartments', { params });
}

// 获取二级科室列表
export function getSecondLevelDepartments(params: { parentId: number, DepartmentName?: string, Type?: string }) {
    return axiosrnewmedical.get('/ContentManagement/Department/GetSecondLevelDepartments', { params });
}

// 获取医生列表
export function getDoctors(params: { doctorName?: string, deptId?: number, jobTitleId?: number, pageIndex?: number, pageSize?: number }) {
    return axiosrnewmedical.get('/Doctor/Doctor/GetDoctors', { params });
}

export {axiosr,axiosrmedical,axiosrnewmedical,axiosrzsh}